#include "pilot_signal.h"
#include "ui_pilot_signal.h"
#include <QDebug> // 用于调试输出
#include <QRegularExpression> // 新增：用于正则表达式匹配

pilot_signal::pilot_signal(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::pilot_signal),
    currentTemp(25)// 初始化温度为25℃（默认值，在合法范围内）
{
    ui->setupUi(this);

    updateLcdDisplay();// 初始化时更新LCD显示（避免初始空白）
}

pilot_signal::~pilot_signal()
{
    delete ui;
}
// 更新空调状态的槽函数
void pilot_signal::updateAirConditionerStatus(const QString& message)
{
    // 使用正则表达式匹配两种格式：
    // 1. "开"+数字+"摄氏度"
    // 2. "关"
    QRegularExpression regex1("开(\\d+)摄氏度");  // 格式1：开+数字+摄氏度
    QRegularExpression regex2("^关$");            // 格式2：单独的"关"

    QRegularExpressionMatch match1 = regex1.match(message);
    QRegularExpressionMatch match2 = regex2.match(message);

    if (match1.hasMatch()) {
        // 格式1匹配成功："开"+数字+"摄氏度"
        QString temperature = match1.captured(1); // 获取温度数字

        // 更新label_2显示
        ui->label_2->setText(QString("空调状态：开%1摄氏度").arg(temperature));

        qDebug() << "[空调遥控] 接收到开机状态：" << message;
    }
    else if (match2.hasMatch()) {
        // 格式2匹配成功：单独的"关"
        ui->label_2->setText("空调状态：关");

        qDebug() << "[空调遥控] 接收到关机状态：" << message;
    }
    // 如果不匹配任何格式，则不更新显示
}
//返回上一页按钮
void pilot_signal::on_pushButton_13_clicked()
{
    emit switchToRemoteControlMain(); // 发射返回信号
}
// 校验温度范围（16-30℃），超出则修正为边界值
void pilot_signal::validateTemperature()
{
    if (currentTemp < MIN_TEMP)
    {
        currentTemp = MIN_TEMP;
        qDebug() << "[空调遥控] 温度低于最小值，自动修正为" << MIN_TEMP << "℃";
    }
    else if (currentTemp > MAX_TEMP)
    {
        currentTemp = MAX_TEMP;
        qDebug() << "[空调遥控] 温度高于最大值，自动修正为" << MAX_TEMP << "℃";
    }
    // 校验后同步更新LCD显示
    updateLcdDisplay();
}

// 将currentTemp的值显示到lcdNumber（LCD仅支持数字显示，直接传int即可）
void pilot_signal::updateLcdDisplay()
{
    ui->lcdNumber->display(currentTemp);
}


// 强风
void pilot_signal::on_pushButton_2_clicked()
{
    emit sendAirConditionerCmd("强风");
}
// 弱风
void pilot_signal::on_pushButton_3_clicked()
{
    emit sendAirConditionerCmd("弱风");
}
// 空调状态改变
void pilot_signal::on_pushButton_12_clicked()
{
    emit sendAirConditionerCmd("空调状态改变");
}
// 发送带单位温度
void pilot_signal::on_pushButton_clicked()
{
    validateTemperature();
    emit sendAirConditionerCmd(QString("%1摄氏度").arg(currentTemp));
}

// +1按钮：温度加1（先加后校验）
void pilot_signal::on_pushButton_10_clicked()
{
    currentTemp += 1;
    validateTemperature();
}

// -1按钮：温度减1（先减后校验）
void pilot_signal::on_pushButton_11_clicked()
{
    currentTemp -= 1;
    validateTemperature();
}

